<?php

class AdminModule extends CWebModule {

    public $defaultController = 'main';
    public $layout = '//layouts/main';
    public $userActions = [
        'Страницы' => [
            'Создание' => 'page/create',
            'Удаление' => 'page/delete',
            'Просмотр' => 'page/view',
            'Управление' => 'page/admin',
        ],
        'Категории' => [
            'Создание' => 'categories/create',
            'Удаление' => 'categories/delete',
            'Просмотр' => 'categories/view',
            'Управление' => 'categories/admin',
        ],
        'Бренды и модели' => [
            'Создание' => 'brand/create',
            'Удаление' => 'brand/delete',
            'Просмотр' => 'brand/view',
            'Управление' => 'brand/admin',
        ],
        'Отзывы' => [
            'Создание' => 'reviews/create',
            'Удаление' => 'reviews/delete',
            'Просмотр' => 'reviews/view',
            'Управление' => 'reviews/admin',
        ],
        'Услуги' => [
            'Создание' => 'services/create',
            'Удаление' => 'services/delete',
            'Просмотр' => 'services/view',
            'Управление' => 'services/admin',
            'Приязка' => 'services/admin',
            'Управление' => 'services/admin',
        ],
    ];

    public function getCurrentControllerAndAction() {
        if (Yii::app()->request->url == '/x8')
            return 'main/index';
        return substr(Yii::app()->request->pathInfo, 3, strlen(Yii::app()->request->pathInfo));
    }

    public function checkUserAccess() {
        if (Yii::app()->user->name['userGroup'] == 'admin')
            return TRUE;
        if (Yii::app()->request->isAjaxRequest)
            return true;
        $allowActions = array('login/logout', 'login/index', 'main/index');
        $userActions = explode(',', Controller::getUser(Yii::app()->user->id, 'userReject'));

        if ($allowActions == array()) {
            
        }

        return in_array($this->getCurrentControllerAndAction(), $userActions) ? TRUE : FALSE;
    }

    public function init() {
        // this method is called when the module is being created
        // you may place code here to customize the module or the application
        // import the module-level models and components
		$this->setImport(array(
			'admin.models.*',
			'admin.components.*',
		));		
        Yii::app()->setComponents(array(
            'errorHandler' => array('errorAction' => 'admin/main/error'),
            'user' => array(
                'allowAutoLogin' => true,
                'class' => 'CWebUser',
                'loginUrl' => Yii::app()->createUrl('admin/login'),
            )
                )
        );
        Yii::app()->clientScript->registerCoreScript('jquery');
    }

    public function beforeControllerAction($controller, $action) {
        if (parent::beforeControllerAction($controller, $action)) {
            // this method is called before any module controller action is performed
            // you may place customized code here		
            if (!Yii::app()->user->isGuest)
                if (!$this->checkUserAccess()) {
                    Yii::app()->getController()->redirect('/x8/main/permission');
                    throw new CHttpException(404, 'У вас недостаточно прав доступа для этой операции');
                }
            return TRUE;
        } else
            return false;
    }

}
